package t

import "fmt"

/*
	解释： 因为只有左边数字的数值少于右边的时候才是负数，所有反转字符，这样左边的只要大于右边的数值
		  ，那么右边必定是负值，用last存储上一次的数值进行比较即可
 */

// 字符串反转
func strRerseve(str string) string {
	s1 := []byte(str)
	s := 0
	e := len(str) -1
	for (s < e) {
		temp := s1[s]
		s1[s] = s1[e]
		s1[e] = temp
		s++
		e--
	}

	return string(s1)
}

// 罗马数字转换
func RomanToInt(s string) int {
	ss := strRerseve(s)
	rmMap := map[string]int{
		"I" : 1,
		"V" : 5,
		"X" : 10,
		"L" : 50,
		"C" : 100,
		"D" : 500,
		"M" : 1000,
	}
	x := 0
	last := 1
	for _,v := range ss {
		c := fmt.Sprintf("%c", v)
		if (last <= rmMap[c]) {
			x = x + rmMap[c]
		}else {
			x = x - rmMap[c]
		}
		last = rmMap[c]
	}

	return x
}
